<?php
/**
 * Repository trida s rozsirujicimi selecty pro entitu UserLog.
 * 
 * @author David Dusek 
 */

namespace CMS\User\Models;

use Doctrine\ORM\EntityRepository;

class UserLogRepository extends EntityRepository {
    
    /**
     * Vyber historie ukonu zadaneho uzivatele.
     * @param int $userId Id uzivatele.
     * @param int $maxRes Maximalni pocet vysledku dotazu. Kdyz je FALSE, tak
     * vrati vsechny.
     * @return array Vysledky dotazu v poli.
     */
    public function getForUser($userId, $maxRes = FALSE) {
        $qb = $this->_em->createQueryBuilder();
        $qb = $qb->select('l')
                 ->from("\CMS\User\Models\UserLog", 'l')
                 ->where("l.user == $userid")
                 ->orderBy("date_time", "DESC");
        
        if ($maxRes !== FALSE) {
            $qb = $qb->setMaxResults($maxRes);
        }
                    
        return $qb->getQuery()->getResult();
    }
    
    /**
     * Vyber historie zmen pro pozadovany zdroj podle nazvu entity a id entity.
     * @param string $entityName Nazev entity.
     * @param int $entityId Id entity.
     * @param int $maxRes Maximalni pocet vysledku. Pokud je FALSE, tak vrati
     * vsechny.
     * @return array Vysledky dotazu v poli.
     */
    public function getForContent($entityName, $entityId, $maxRes = FALSE) {
        $qb = $this->_em->createQueryBuilder();
        $qb = $qb->select('l')
                 ->from("\CMS\User\Models\UserLog", 'l')
                 ->where("l.entity == $entityName AND l.entityId == $entityId")
                 ->orderBy("date_time", "DESC");
        
        if ($maxRes !== FALSE) {
            $qb = $qb->setMaxResults($maxRes);
        }
                    
        return $qb->getQuery()->getResult();
    }
}
